package blackmamba.threads.runnable_enemy;


import java.awt.BorderLayout;
import java.awt.Color;

import javax.swing.BorderFactory;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JSlider;
import javax.swing.border.Border;
import javax.swing.event.ChangeListener;

/**
 * JSlider modificato per mostrare un titolo che indica il listener associato.
 * @author Jancarlos
 *
 */
public class TestSlider extends JPanel {

	private JSlider slider;
	private int value;
	private Border titledBorder;
	private JLabel labelMin, labelMax;
	private String title = "Not Listened Test Slider";
	
	
	/**
	 * Crea uno slider, a cui assegnare un listener con il metodo dedicato.
	 * @param min Valore minimo
	 * @param max Valore massimo
	 * @param startValue Valore di partenza
	 */
	public TestSlider(int min, int max, int startValue ) {
		
		slider = new JSlider(min, max, startValue){
			@Override
			public int getValue() {
				value = super.getValue();
				updateTitle();
				return value;
			}
		};
		
		labelMin = new JLabel(min+"");
		labelMax = new JLabel(max+"");
		value = startValue;
		init();
	}
	
	
	private void init(){
		slider.setFocusable(false);
		setLayout(new BorderLayout());
		add(labelMin, BorderLayout.WEST );
		add(slider, BorderLayout.CENTER);
		add(labelMax, BorderLayout.EAST );
		
	}
	
	
	public void updateTitle(){
		titledBorder  = BorderFactory.createTitledBorder(
				BorderFactory.createLineBorder(Color.BLACK), title+" = "+ value);
		setBorder( titledBorder );
		updateUI();
	}
	
	
	
	
	
	/**
	 * Metodo per impostare il listener dello slider.
	 * @param title Titolo da assegnare
	 * @param listener Listener da associare
	 */
	public void setSliderChangeListener(String title, ChangeListener listener ){
		this.title = title;
		updateTitle();
		slider.addChangeListener(listener);
	}
}
